void main() {
  List list1 = List();
  list1.add("aa");
  list1.add("11");
  list1.add("22");
  print("list1 = $list1");
  print("list1[1] = ${list1[1]}");

  // 使用泛型，编译时检查变量类型，好处是可以防止编码出错，特别是多人协作开发时，而编译后泛型就被擦除了
  List<int> list2 = List();
  list2.add(123);
// The argument type 'String' can't be assigned to the parameter type 'int'
// 无法将参数类型“字符串”分配给参数类型“ int”
  print(list2);
  print("==========遍历==========");
  // 遍历
  // 1 传统for循环
  for (int i = 0; i < list1.length; i++) {
    print(list1[i]);
  }
  print("==========遍历==========");
  // 2 for item
  for (var item in list1) {
    print(item);
  }
  print("==========遍历==========");
  // 3 for each，这里实际上就是个高阶函数
  list1.forEach((element) {
    print(element);
  });
  print("==========查找==========");
  // 查找，遍历查找，上面三种方式都可以查找
  // 还有一种方式，使用高阶函数
  int toFindIndex = list1.indexWhere((element) => element == "aa");
  print("toFindIndex = $toFindIndex");
}
